Database Integration (ডেটাবেস ইন্টিগ্রেশন)

Computer Programming - নোড জেএস (Node.js)
271

Node.js দিয়ে ওয়েব অ্যাপ্লিকেশন তৈরি করার সময় সাধারণত ডেটাবেস ইন্টিগ্রেশন প্রয়োজন হয়, যাতে ডেটা সংরক্ষণ, আপডেট, রিট্রিভ, এবং ডিলিট করা যায়। Node.js বিভিন্ন ডেটাবেসের সাথে ইন্টিগ্রেট করতে পারে, যেমন MySQL, MongoDB, PostgreSQL, SQLite, ইত্যাদি।

এই টিউটোরিয়ালে আমরা MySQL এবং MongoDB-র সাথে Node.js অ্যাপ্লিকেশন ইন্টিগ্রেট করার প্রক্রিয়া দেখব।


১. MySQL ডেটাবেস ইন্টিগ্রেশন

MySQL হল একটি জনপ্রিয় রিলেশনাল ডেটাবেস ম্যানেজমেন্ট সিস্টেম (RDBMS)। Node.js-এ MySQL ডেটাবেসের সাথে ইন্টিগ্রেশন করার জন্য আমরা MySQL Node.js ড্রাইভার ব্যবহার করতে পারি। এটি MySQL ডেটাবেসের সাথে সংযোগ স্থাপন এবং বিভিন্ন ডেটাবেস অপারেশন করতে সাহায্য করে।

স্টেপ ১: MySQL ইনস্টলেশন

Node.js প্রজেক্টে MySQL প্যাকেজ ইনস্টল করতে হবে:

npm install mysql --save

স্টেপ ২: MySQL ডেটাবেসের সাথে সংযোগ স্থাপন

নিচে একটি সাধারণ MySQL ডেটাবেসের সাথে Node.js অ্যাপ্লিকেশন ইন্টিগ্রেট করার উদাহরণ দেওয়া হলো:

const mysql = require('mysql');

// MySQL ডেটাবেসের সাথে সংযোগ স্থাপন
const db = mysql.createConnection({
  host: 'localhost',
  user: 'root',
  password: 'your-password',
  database: 'testdb'
});

// সংযোগ স্থাপন
db.connect((err) => {
  if (err) {
    console.error('Error connecting to the database: ', err);
    return;
  }
  console.log('Connected to the MySQL database');
});

// ডেটাবেসে ডেটা ইনসার্ট করা
const user = { name: 'John Doe', age: 30 };
db.query('INSERT INTO users SET ?', user, (err, res) => {
  if (err) {
    console.error('Error inserting data: ', err);
    return;
  }
  console.log('Data inserted with ID: ', res.insertId);
});

// ডেটাবেস থেকে ডেটা রিট্রিভ করা
db.query('SELECT * FROM users', (err, results) => {
  if (err) {
    console.error('Error retrieving data: ', err);
    return;
  }
  console.log('Users:', results);
});

// সংযোগ বন্ধ করা
db.end();

এখানে, mysql.createConnection() মেথড ব্যবহার করে MySQL ডেটাবেসের সাথে সংযোগ স্থাপন করা হয়েছে এবং db.query() মেথড দিয়ে ডেটা ইনসার্ট এবং রিট্রিভ করা হয়েছে।


২. MongoDB ডেটাবেস ইন্টিগ্রেশন

MongoDB একটি NoSQL ডেটাবেস, যা JSON-অনুপ্রাণিত ডেটা সংরক্ষণ করে। MongoDB এর সাথে Node.js ইন্টিগ্রেট করার জন্য আমরা Mongoose লাইব্রেরি ব্যবহার করতে পারি, যা MongoDB এর জন্য একটি জনপ্রিয় Object Data Modeling (ODM) লাইব্রেরি।

স্টেপ ১: MongoDB ইনস্টলেশন

MongoDB ডেটাবেসে ডেটা ইন্টিগ্রেট করতে Mongoose লাইব্রেরি ইনস্টল করতে হবে:

npm install mongoose --save

স্টেপ ২: MongoDB ডেটাবেসের সাথে সংযোগ স্থাপন

এখন MongoDB ডেটাবেসে সংযোগ স্থাপন এবং ডেটা ব্যবস্থাপনা করা:

const mongoose = require('mongoose');

// MongoDB এর সাথে সংযোগ স্থাপন
mongoose.connect('mongodb://localhost:27017/testdb', { useNewUrlParser: true, useUnifiedTopology: true })
  .then(() => {
    console.log('Connected to MongoDB');
  })
  .catch((err) => {
    console.error('Error connecting to MongoDB:', err);
  });

// MongoDB Schema তৈরি
const userSchema = new mongoose.Schema({
  name: String,
  age: Number
});

// Model তৈরি
const User = mongoose.model('User', userSchema);

// MongoDB ডেটাবেসে ডেটা ইনসার্ট করা
const user = new User({ name: 'Jane Doe', age: 25 });
user.save()
  .then(() => console.log('User data inserted'))
  .catch((err) => console.error('Error inserting data:', err));

// MongoDB থেকে ডেটা রিট্রিভ করা
User.find({}, (err, users) => {
  if (err) {
    console.error('Error retrieving data:', err);
    return;
  }
  console.log('Users:', users);
});

এখানে, mongoose.connect() মেথড ব্যবহার করে MongoDB ডেটাবেসের সাথে সংযোগ স্থাপন করা হয়েছে এবং User.find() মেথড দিয়ে MongoDB থেকে ডেটা রিট্রিভ করা হয়েছে। MongoDB এর জন্য Schema এবং Model তৈরি করা হয়েছে।


৩. SQLite ডেটাবেস ইন্টিগ্রেশন

SQLite একটি হালকা ও সহজে ব্যবহৃত রিলেশনাল ডেটাবেস যা ফাইল ভিত্তিক এবং সার্ভারবিহীন। এটি ছোট স্কেল অ্যাপ্লিকেশন এবং ডেভেলপমেন্ট পরীক্ষণের জন্য বেশ উপকারী। Node.js এ SQLite ইন্টিগ্রেট করতে sqlite3 প্যাকেজ ব্যবহার করা হয়।

স্টেপ ১: SQLite3 ইনস্টলেশন

SQLite3 ইনস্টল করতে:

npm install sqlite3 --save

স্টেপ ২: SQLite3 ডেটাবেসের সাথে সংযোগ স্থাপন

SQLite3 ব্যবহার করে ডেটাবেসে ডেটা সংরক্ষণ এবং রিট্রিভ করার উদাহরণ:

const sqlite3 = require('sqlite3').verbose();

// SQLite3 ডেটাবেসের সাথে সংযোগ স্থাপন
const db = new sqlite3.Database('./testdb.db');

// একটি টেবিল তৈরি করা
db.serialize(() => {
  db.run("CREATE TABLE IF NOT EXISTS users (name TEXT, age INTEGER)");

  // ডেটা ইনসার্ট করা
  const stmt = db.prepare("INSERT INTO users VALUES (?, ?)");
  stmt.run("John Doe", 30);
  stmt.run("Jane Doe", 25);
  stmt.finalize();

  // ডেটা রিট্রিভ করা
  db.each("SELECT rowid AS id, name, age FROM users", (err, row) => {
    if (err) {
      console.error('Error retrieving data:', err);
    } else {
      console.log(`${row.id}: ${row.name} is ${row.age} years old`);
    }
  });
});

// সংযোগ বন্ধ করা
db.close();

এখানে sqlite3.Database() মেথড ব্যবহার করে SQLite ডেটাবেসের সাথে সংযোগ স্থাপন করা হয়েছে এবং SQL কমান্ড ব্যবহার করে টেবিল তৈরি এবং ডেটা ইনসার্ট/রিট্রিভ করা হয়েছে।


সারাংশ

Node.js বিভিন্ন ধরনের ডেটাবেসের সাথে সহজেই ইন্টিগ্রেট হতে পারে। MySQL, MongoDB, এবং SQLite এর মতো জনপ্রিয় ডেটাবেসগুলির জন্য Node.js-এ বিভিন্ন ড্রাইভার এবং লাইব্রেরি (যেমন mysql, mongoose, sqlite3) উপলব্ধ। আপনি যে কোনো ধরনের ডেটাবেস ব্যবহার করে ডেটা সংরক্ষণ, রিট্রিভ, আপডেট এবং ডিলিট করতে পারেন। Express.js এর মতো ফ্রেমওয়ার্কের সাথে ডেটাবেস ইন্টিগ্রেশন আপনাকে দ্রুত এবং স্কেলেবল ওয়েব অ্যাপ্লিকেশন ডেভেলপ করতে সাহায্য করে।

Content added By

Node.js এর সাথে MongoDB সংযোগ করা (Mongoose)

261

MongoDB হল একটি NoSQL ডাটাবেস যা ডকুমেন্ট-ওরিয়েন্টেড ডেটা স্টোরেজ ব্যবস্থাপনা প্রদান করে। MongoDB সাধারণত ডাটা শেপ, স্কেল এবং কর্মক্ষমতার জন্য ব্যবহৃত হয়, বিশেষত ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে। Mongoose হল একটি MongoDB Object Data Modeling (ODM) লাইব্রেরি, যা MongoDB এর সাথে Node.js অ্যাপ্লিকেশনকে সহজে সংযোগ করতে সাহায্য করে।

Mongoose MongoDB ডাটাবেসের সাথে কাজ করার জন্য একটি সরল এবং শক্তিশালী API প্রদান করে, যা MongoDB ডাটাবেস অপারেশনকে আরও সহজ এবং কাঠামোবদ্ধ করে তোলে।


১. MongoDB ইনস্টলেশন

MongoDB প্রথমে ইনস্টল করা থাকতে হবে। আপনি MongoDB ডাউনলোড এবং ইনস্টল করতে পারেন নিচের লিঙ্ক থেকে:

আপনি MongoDB Atlas ব্যবহার করেও ক্লাউডে MongoDB ব্যবহার করতে পারেন, যদি আপনি লোকাল ইনস্টল না করতে চান। MongoDB Atlas MongoDB এর একটি ক্লাউড সেবা যা ডাটাবেস হোস্টিং এবং পরিচালনা সহজ করে তোলে।


২. Mongoose ইনস্টলেশন

Node.js এর সাথে MongoDB সংযোগ করার জন্য Mongoose লাইব্রেরি ব্যবহার করা হয়। প্রথমে, আপনার প্রজেক্টে Mongoose ইনস্টল করুন:

npm install mongoose

এটি আপনার প্রজেক্টের node_modules ফোল্ডারে Mongoose ইনস্টল করবে এবং package.json ফাইলে ডিপেনডেন্সি হিসেবে যুক্ত করবে।


৩. MongoDB এবং Mongoose এর মাধ্যমে সংযোগ স্থাপন

এখন, আপনি MongoDB এবং Mongoose ব্যবহার করে একটি সংযোগ তৈরি করতে পারেন। নিচে একটি সিম্পল উদাহরণ দেওয়া হলো:

app.js (Mongoose সংযোগ উদাহরণ)

const mongoose = require('mongoose');

// MongoDB URI (MongoDB Atlas বা লোকাল MongoDB URI ব্যবহার করতে পারেন)
const mongoURI = 'mongodb://localhost:27017/mydatabase'; // লোকাল MongoDB

// Mongoose এর মাধ্যমে MongoDB এর সাথে সংযোগ স্থাপন
mongoose.connect(mongoURI, {
  useNewUrlParser: true,
  useUnifiedTopology: true
})
.then(() => {
  console.log('MongoDB Connected!');
})
.catch(err => {
  console.log('MongoDB connection error:', err);
});

ব্যাখ্যা:

  • mongoose.connect(): এই মেথডটি MongoDB ডাটাবেসের সাথে সংযোগ স্থাপন করে। এখানে mongoURI হল MongoDB এর URI, যা MongoDB সার্ভারকে নির্দেশ করে।
  • useNewUrlParser এবং useUnifiedTopology: এই দুটি অপশন MongoDB ক্লায়েন্টের নতুন পদ্ধতি ব্যবহার করতে সক্ষম করে এবং deprecated warnings থেকে মুক্তি দেয়।
  • সংযোগ সফল হলে, then() ব্লকটি কার্যকর হবে, এবং কোন সমস্যা থাকলে, catch() ব্লকটি কাজ করবে।

৪. Mongoose Schema এবং Model তৈরি করা

MongoDB ডাটাবেসে ডেটা সংরক্ষণ করতে, আমরা Mongoose এর Schema এবং Model ব্যবহার করি।

Schema এবং Model উদাহরণ

const mongoose = require('mongoose');

// Schema তৈরি করা
const userSchema = new mongoose.Schema({
  name: {
    type: String,
    required: true
  },
  email: {
    type: String,
    required: true,
    unique: true
  },
  age: {
    type: Number,
    min: 18
  }
});

// Model তৈরি করা
const User = mongoose.model('User', userSchema);

// একটি নতুন ডকুমেন্ট ইনসার্ট করা
const newUser = new User({
  name: 'John Doe',
  email: 'john.doe@example.com',
  age: 25
});

newUser.save()
  .then(user => {
    console.log('User saved:', user);
  })
  .catch(err => {
    console.log('Error saving user:', err);
  });

ব্যাখ্যা:

  • Schema: এটি MongoDB ডাটাবেসের জন্য একটি কাঠামো তৈরি করে, যেখানে আপনি প্রতিটি ফিল্ডের ধরন (data type) এবং তার বৈশিষ্ট্যগুলো নির্ধারণ করেন (যেমন required, unique, min, ইত্যাদি)।
  • Model: Model হল MongoDB এর একটি কনস্ট্রাক্ট, যা Schema ব্যবহার করে ডেটা ইনসার্ট, আপডেট, ডিলিট এবং ফাইন্ড করতে ব্যবহৃত হয়। এখানে User একটি Model যা userSchema এর উপর ভিত্তি করে তৈরি করা হয়েছে।
  • save(): এই ফাংশনটি MongoDB ডাটাবেসে নতুন ডকুমেন্ট সংরক্ষণ করতে ব্যবহৃত হয়।

৫. ডেটা খোঁজা (Find Data)

Mongoose এর মাধ্যমে MongoDB ডাটাবেস থেকে ডেটা খোঁজা সহজ। নিচে find() মেথড ব্যবহার করে ডেটা খোঁজার একটি উদাহরণ দেওয়া হলো:

// সব ইউজার খোঁজা
User.find()
  .then(users => {
    console.log('Users found:', users);
  })
  .catch(err => {
    console.log('Error finding users:', err);
  });

// একটি নির্দিষ্ট ইমেইল দিয়ে ইউজার খোঁজা
User.findOne({ email: 'john.doe@example.com' })
  .then(user => {
    console.log('User found:', user);
  })
  .catch(err => {
    console.log('Error finding user:', err);
  });

ব্যাখ্যা:

  • find(): এটি MongoDB থেকে সমস্ত ডকুমেন্ট ফেচ করে। আপনি এটি দিয়ে নির্দিষ্ট শর্ত পূরণকারী ডেটা খুঁজে বের করতে পারেন।
  • findOne(): এটি একটি নির্দিষ্ট শর্ত পূরণকারী একক ডকুমেন্ট ফিরিয়ে দেয়।

৬. ডেটা আপডেট এবং ডিলিট করা

ডেটা আপডেট করা:

User.updateOne({ email: 'john.doe@example.com' }, { $set: { age: 30 } })
  .then(result => {
    console.log('User updated:', result);
  })
  .catch(err => {
    console.log('Error updating user:', err);
  });

ডেটা মুছে ফেলা:

User.deleteOne({ email: 'john.doe@example.com' })
  .then(result => {
    console.log('User deleted:', result);
  })
  .catch(err => {
    console.log('Error deleting user:', err);
  });

সারাংশ

Mongoose হল একটি MongoDB Object Data Modeling (ODM) লাইব্রেরি যা Node.js অ্যাপ্লিকেশনের সাথে MongoDB সংযোগ স্থাপন এবং ডেটা পরিচালনার জন্য ব্যবহৃত হয়। এটি MongoDB ডেটাবেসের জন্য একটি সহজ, শক্তিশালী API প্রদান করে এবং MongoDB এর সাথে কাজ করার জন্য Schema এবং Model ব্যবহার করে ডেটা ম্যানেজমেন্টের প্রক্রিয়াকে সহজ ও কাঠামোবদ্ধ করে তোলে। Mongoose ব্যবহার করে আপনি MongoDB ডেটাবেসের সাথে সহজে সংযোগ স্থাপন, ডেটা ইনসার্ট, আপডেট, ডিলিট এবং খুঁজে বের করতে পারেন।

Content added By

SQL ডাটাবেস সংযোগ (MySQL, PostgreSQL)

200

Node.js-এ SQL ডাটাবেস সংযোগের জন্য জনপ্রিয় দুটি ডাটাবেস হল MySQL এবং PostgreSQL। Node.js এর মাধ্যমে এই ডাটাবেসগুলির সাথে সংযোগ স্থাপন, ডেটা পড়া এবং লেখার জন্য যথাক্রমে MySQL এবং pg (PostgreSQL) লাইব্রেরি ব্যবহার করা হয়। নিচে এই দুটি ডাটাবেসের সাথে সংযোগ এবং কার্যকরী উদাহরণ দেওয়া হলো।


১. MySQL ডাটাবেস সংযোগ

Node.js-এ MySQL ডাটাবেসে সংযোগ স্থাপন করার জন্য mysql প্যাকেজটি ব্যবহৃত হয়। এই লাইব্রেরিটি MySQL সার্ভারের সাথে সংযোগ স্থাপন এবং SQL কুয়েরি রান করার জন্য ব্যবহৃত হয়।

MySQL ডাটাবেসে সংযোগ স্থাপন:

  1. mysql প্যাকেজ ইনস্টল করা:
npm install mysql
  1. MySQL ডাটাবেসে সংযোগ স্থাপন:
const mysql = require('mysql');

// MySQL ডাটাবেসে সংযোগ স্থাপন
const connection = mysql.createConnection({
  host: 'localhost',        // ডাটাবেস সার্ভারের হোস্ট
  user: 'root',             // ডাটাবেস ইউজার
  password: 'password',     // ইউজারের পাসওয়ার্ড
  database: 'my_database'   // ডাটাবেসের নাম
});

// সংযোগ স্থাপন
connection.connect((err) => {
  if (err) {
    console.error('Error connecting to the database:', err.stack);
    return;
  }
  console.log('Connected to the database with ID:', connection.threadId);
});

// ডাটাবেসে একটি কুয়েরি রান করা
connection.query('SELECT * FROM users', (err, results, fields) => {
  if (err) throw err;
  console.log('Users:', results);
});

// সংযোগ বন্ধ করা
connection.end();

এখানে:

  • mysql.createConnection() দিয়ে ডাটাবেসের সাথে সংযোগ স্থাপন করা হয়।
  • connection.query() মেথড দিয়ে SQL কুয়েরি রান করা হয় এবং ফলাফল প্রিন্ট করা হয়।
  • connection.end() দিয়ে সংযোগ বন্ধ করা হয়।

সাধারণ MySQL কুয়েরি উদাহরণ:

// একটি নতুন রেকর্ড ইনসার্ট করা
connection.query('INSERT INTO users (name, age) VALUES (?, ?)', ['John', 30], (err, result) => {
  if (err) throw err;
  console.log('Record inserted, ID:', result.insertId);
});

২. PostgreSQL ডাটাবেস সংযোগ

Node.js-এ PostgreSQL ডাটাবেসে সংযোগ স্থাপন করার জন্য pg লাইব্রেরি ব্যবহার করা হয়। এটি PostgreSQL সার্ভারের সাথে সংযোগ স্থাপন এবং SQL কুয়েরি রান করার জন্য ব্যবহৃত হয়।

PostgreSQL ডাটাবেসে সংযোগ স্থাপন:

  1. pg প্যাকেজ ইনস্টল করা:
npm install pg
  1. PostgreSQL ডাটাবেসে সংযোগ স্থাপন:
const { Client } = require('pg');

// PostgreSQL ডাটাবেসে সংযোগ স্থাপন
const client = new Client({
  host: 'localhost',         // ডাটাবেস সার্ভারের হোস্ট
  user: 'postgres',          // ডাটাবেস ইউজার
  password: 'password',      // ইউজারের পাসওয়ার্ড
  database: 'my_database',   // ডাটাবেসের নাম
  port: 5432                 // PostgreSQL এর পোর্ট (সাধারণত 5432)
});

// সংযোগ স্থাপন
client.connect((err) => {
  if (err) {
    console.error('Error connecting to the database:', err.stack);
    return;
  }
  console.log('Connected to PostgreSQL database');
});

// ডাটাবেসে একটি কুয়েরি রান করা
client.query('SELECT * FROM users', (err, res) => {
  if (err) {
    console.log('Query error:', err.stack);
  } else {
    console.log('Users:', res.rows); // ফলাফল প্রিন্ট
  }
  client.end(); // সংযোগ বন্ধ
});

এখানে:

  • new Client() দিয়ে PostgreSQL ডাটাবেসের সাথে সংযোগের জন্য একটি ক্লায়েন্ট তৈরি করা হয়।
  • client.connect() দিয়ে PostgreSQL সার্ভারের সাথে সংযোগ স্থাপন করা হয়।
  • client.query() মেথড দিয়ে SQL কুয়েরি রান করা হয় এবং res.rows এর মাধ্যমে ফলাফল পাওয়া যায়।
  • client.end() দিয়ে সংযোগ বন্ধ করা হয়।

সাধারণ PostgreSQL কুয়েরি উদাহরণ:

// একটি নতুন রেকর্ড ইনসার্ট করা
client.query('INSERT INTO users (name, age) VALUES ($1, $2)', ['John', 30], (err, res) => {
  if (err) {
    console.log('Error inserting record:', err.stack);
  } else {
    console.log('Record inserted');
  }
});

সারাংশ

  • MySQL: Node.js-এ MySQL ডাটাবেসের সাথে সংযোগ স্থাপন করতে mysql লাইব্রেরি ব্যবহৃত হয়। এতে createConnection() এবং query() মেথড ব্যবহার করে ডাটাবেস সংযোগ এবং কুয়েরি রান করা হয়।
  • PostgreSQL: PostgreSQL ডাটাবেসের সাথে সংযোগ স্থাপন করতে pg লাইব্রেরি ব্যবহৃত হয়। এতে Client ক্লাস ব্যবহার করে সংযোগ স্থাপন এবং query() মেথড দিয়ে কুয়েরি রান করা হয়।

এই দুই ডাটাবেসের সংযোগ স্থাপন এবং কুয়েরি রান করা Node.js অ্যাপ্লিকেশনে সহজেই সম্ভব, এবং এটি SQL ডাটাবেসের সাথে কার্যকরী যোগাযোগ স্থাপনে সহায়ক।

Content added By

CRUD Operations (Create, Read, Update, Delete)

344

CRUD হল Create, Read, Update, এবং Delete এর সংক্ষিপ্ত রূপ। এই চারটি অপারেশন ওয়েব অ্যাপ্লিকেশন ডেভেলপমেন্টে ডাটাবেস বা অন্য কোনো ডাটা স্টোরেজ সিস্টেমের সাথে ইন্টারঅ্যাক্ট করার জন্য ব্যবহৃত হয়। CRUD অপারেশনগুলির মাধ্যমে ডাটা তৈরি করা, পড়া, পরিবর্তন করা এবং মুছে ফেলা সম্ভব হয়। এগুলি সাধারণত ওয়েব অ্যাপ্লিকেশনগুলির সার্ভার সাইড লজিকের অংশ হিসেবে কাজ করে।

Node.js এবং Express ব্যবহার করে একটি RESTful API তৈরি করতে CRUD অপারেশনগুলির বাস্তবায়ন করা হয়। ডাটাবেস হিসেবে MongoDB বা MySQL ব্যবহার করা হয়, তবে এখানে MongoDB এর সাথে CRUD অপারেশন দেখানো হবে।


১. Create (তৈরি করা)

Create অপারেশন ডাটাবেসে নতুন রেকর্ড বা ডাটা তৈরি করতে ব্যবহৃত হয়।

MongoDB এ Create উদাহরণ (POST রিকোয়েস্ট):

  1. Express এ API তৈরি করা:
const express = require('express');
const mongoose = require('mongoose');
const app = express();

app.use(express.json());  // JSON বডি পার্স করার জন্য

// MongoDB মডেল তৈরি করা
const User = mongoose.model('User', new mongoose.Schema({
  name: String,
  age: Number,
  email: String
}));

// POST রিকোয়েস্ট হ্যান্ডলার (Create)
app.post('/users', async (req, res) => {
  try {
    const { name, age, email } = req.body;
    const newUser = new User({ name, age, email });
    await newUser.save();  // ডাটাবেসে নতুন রেকর্ড সংরক্ষণ করা
    res.status(201).send(newUser);  // সফল হলে 201 স্ট্যাটাস কোড এবং ডাটা রিটার্ন
  } catch (err) {
    res.status(400).send(err);  // ত্রুটি হলে 400 স্ট্যাটাস কোড
  }
});

app.listen(3000, () => {
  console.log('Server is running on http://localhost:3000');
});

এখানে, /users পাথে POST রিকোয়েস্ট এ নতুন ব্যবহারকারী তৈরি করা হচ্ছে এবং MongoDB ডাটাবেসে সেই তথ্য সংরক্ষণ করা হচ্ছে।


২. Read (পড়া)

Read অপারেশন ব্যবহার করে ডাটাবেস থেকে ডাটা পড়া বা দেখানো হয়। এটি সাধারণত GET রিকোয়েস্টে ব্যবহৃত হয়।

MongoDB এ Read উদাহরণ (GET রিকোয়েস্ট):

  1. GET রিকোয়েস্ট হ্যান্ডলার (Read):
// GET রিকোয়েস্ট হ্যান্ডলার (Read)
app.get('/users', async (req, res) => {
  try {
    const users = await User.find();  // সমস্ত ইউজারের ডাটা পড়া
    res.status(200).send(users);  // সফল হলে 200 স্ট্যাটাস কোড এবং ডাটা রিটার্ন
  } catch (err) {
    res.status(400).send(err);  // ত্রুটি হলে 400 স্ট্যাটাস কোড
  }
});

এখানে, /users পাথের GET রিকোয়েস্টে MongoDB থেকে সমস্ত ব্যবহারকারীদের তথ্য ফিরিয়ে দেওয়া হচ্ছে।

  1. GET একক রেকর্ড পড়া:
// GET রিকোয়েস্ট হ্যান্ডলার (Read single record)
app.get('/users/:id', async (req, res) => {
  try {
    const user = await User.findById(req.params.id);  // ইউজারের আইডি দিয়ে ডাটা পড়া
    if (!user) {
      return res.status(404).send('User not found');
    }
    res.status(200).send(user);  // সফল হলে 200 স্ট্যাটাস কোড এবং ডাটা রিটার্ন
  } catch (err) {
    res.status(400).send(err);  // ত্রুটি হলে 400 স্ট্যাটাস কোড
  }
});

এখানে, GET /users/:id পাথের মাধ্যমে একক ব্যবহারকারীর তথ্য তার id দিয়ে MongoDB থেকে পাওয়া হচ্ছে।


৩. Update (আপডেট করা)

Update অপারেশন ব্যবহার করে ডাটাবেসে থাকা একটি রেকর্ড বা ডাটা পরিবর্তন করা হয়।

MongoDB এ Update উদাহরণ (PUT/PATCH রিকোয়েস্ট):

  1. PUT রিকোয়েস্ট হ্যান্ডলার (Update):
// PUT রিকোয়েস্ট হ্যান্ডলার (Update)
app.put('/users/:id', async (req, res) => {
  try {
    const { name, age, email } = req.body;
    const updatedUser = await User.findByIdAndUpdate(req.params.id, {
      name,
      age,
      email
    }, { new: true });  // নতুন ডাটা ফেরত আসবে

    if (!updatedUser) {
      return res.status(404).send('User not found');
    }

    res.status(200).send(updatedUser);  // সফল হলে 200 স্ট্যাটাস কোড এবং আপডেটেড ডাটা
  } catch (err) {
    res.status(400).send(err);  // ত্রুটি হলে 400 স্ট্যাটাস কোড
  }
});

এখানে, PUT /users/:id পাথের মাধ্যমে নির্দিষ্ট আইডি অনুযায়ী ব্যবহারকারীর ডাটা আপডেট করা হচ্ছে। findByIdAndUpdate() মেথড ব্যবহার করে ডাটাবেসে রেকর্ড আপডেট করা হচ্ছে।

  1. PATCH রিকোয়েস্ট হ্যান্ডলার (Partial Update):
// PATCH রিকোয়েস্ট হ্যান্ডলার (Partial Update)
app.patch('/users/:id', async (req, res) => {
  try {
    const updatedUser = await User.findByIdAndUpdate(req.params.id, req.body, { new: true });
    if (!updatedUser) {
      return res.status(404).send('User not found');
    }
    res.status(200).send(updatedUser);
  } catch (err) {
    res.status(400).send(err);
  }
});

এখানে, PATCH /users/:id পাথের মাধ্যমে কেবল নির্দিষ্ট ক্ষেত্রগুলোর আপডেট করা হচ্ছে।


৪. Delete (মুছে ফেলা)

Delete অপারেশন ডাটাবেস থেকে কোনো রেকর্ড বা ডাটা মুছে ফেলার জন্য ব্যবহৃত হয়।

MongoDB এ Delete উদাহরণ (DELETE রিকোয়েস্ট):

  1. DELETE রিকোয়েস্ট হ্যান্ডলার (Delete):
// DELETE রিকোয়েস্ট হ্যান্ডলার (Delete)
app.delete('/users/:id', async (req, res) => {
  try {
    const deletedUser = await User.findByIdAndDelete(req.params.id);  // আইডি দিয়ে ইউজার মুছে ফেলা
    if (!deletedUser) {
      return res.status(404).send('User not found');
    }
    res.status(200).send('User deleted successfully');  // সফল হলে 200 স্ট্যাটাস কোড
  } catch (err) {
    res.status(400).send(err);  // ত্রুটি হলে 400 স্ট্যাটাস কোড
  }
});

এখানে, DELETE /users/:id পাথের মাধ্যমে নির্দিষ্ট আইডি অনুযায়ী ব্যবহারকারী মুছে ফেলা হচ্ছে।


সারাংশ

  • Create (POST) অপারেশন ডাটাবেসে নতুন রেকর্ড তৈরি করে।
  • Read (GET) অপারেশন ডাটাবেস থেকে রেকর্ড পড়তে ব্যবহৃত হয়।
  • Update (PUT/PATCH) অপারেশন ডাটাবেসের বিদ্যমান রেকর্ড পরিবর্তন করে।
  • Delete (DELETE) অপারেশন ডাটাবেস থেকে রেকর্ড মুছে ফেলে।

এই CRUD অপারেশনগুলি Node.js এবং Express সহ MongoDB বা অন্যান্য ডাটাবেস সিস্টেমে RESTful API তৈরি করার জন্য গুরুত্বপূর্ণ ভিত্তি।

Content added By

Database Queries এবং Transactions

204

Node.js-এ ডাটাবেসের সাথে কাজ করার জন্য, আমরা সাধারণত SQL বা NoSQL ডাটাবেস ব্যবহার করি। এখানে SQL (Structured Query Language) ডাটাবেস যেমন MySQL, PostgreSQL এবং NoSQL ডাটাবেস যেমন MongoDB এর সাথে ডাটাবেস কুয়েরি এবং ট্রানজেকশন হ্যান্ডলিং নিয়ে আলোচনা করব।


১. SQL Database (MySQL/PostgreSQL) Query Handling

SQL ডাটাবেসে ডাটা রিট্রিভাল, ইনসার্ট, আপডেট, এবং ডিলিট করার জন্য কুয়েরি ব্যবহার করা হয়। Node.js এ SQL ডাটাবেসের সাথে যোগাযোগ করতে সাধারণত mysql2, pg (PostgreSQL) বা sequelize (ORM) প্যাকেজ ব্যবহৃত হয়।

MySQL Query Handling (mysql2 প্যাকেজ)

  1. MySQL2 ইনস্টল করা
npm install mysql2
  1. MySQL কনফিগারেশন এবং কুয়েরি এক্সিকিউট করা
const mysql = require('mysql2');

// MySQL ডাটাবেসের সাথে সংযোগ স্থাপন
const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'yourpassword',
    database: 'test_db'
});

// কুয়েরি এক্সিকিউট করা
connection.query('SELECT * FROM users', (err, results, fields) => {
    if (err) {
        console.error('Error executing query:', err);
    } else {
        console.log('Query Results:', results);
    }
    connection.end();
});

এখানে, connection.query() ব্যবহার করে একটি SELECT কুয়েরি ডাটাবেসে পাঠানো হয়েছে এবং তার ফলাফল results এ প্রাপ্ত হয়েছে। fields হল ডাটা কনফিগারেশন।

MySQL Insert Query (Data Insert)

const sql = 'INSERT INTO users (name, email) VALUES (?, ?)';
connection.execute(sql, ['John Doe', 'john.doe@example.com'], (err, results) => {
    if (err) {
        console.error('Error executing query:', err);
    } else {
        console.log('Inserted Row ID:', results.insertId);
    }
    connection.end();
});

এখানে, ? ব্যবহার করে নিরাপদভাবে ডাটা ইনসার্ট করা হয়েছে।


২. Database Transactions (SQL)

Transactions হল একটি সিরিজ অপারেশন, যেগুলি একযোগে সফলভাবে সম্পন্ন হলে কার্যকর হয়। ট্রানজেকশন সঠিকভাবে পরিচালনা করতে COMMIT এবং ROLLBACK ব্যবহার করা হয়। ট্রানজেকশন ব্যবহৃত হয় যখন একাধিক ডাটাবেস অপারেশন একটি একক ইউনিট হিসেবে পরিচালিত হয়।

MySQL Transaction Handling

const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'yourpassword',
    database: 'test_db'
});

// ট্রানজেকশন শুরু করা
connection.beginTransaction((err) => {
    if (err) {
        console.error('Error starting transaction:', err);
        return;
    }

    const sql1 = 'INSERT INTO users (name, email) VALUES (?, ?)';
    const sql2 = 'UPDATE accounts SET balance = balance - ? WHERE user_id = ?';

    // প্রথম কুয়েরি ইনসার্ট করা
    connection.query(sql1, ['Jane Doe', 'jane.doe@example.com'], (err, results1) => {
        if (err) {
            return connection.rollback(() => {
                console.error('Error in first query, rolling back:', err);
            });
        }

        // দ্বিতীয় কুয়েরি আপডেট করা
        connection.query(sql2, [100, results1.insertId], (err, results2) => {
            if (err) {
                return connection.rollback(() => {
                    console.error('Error in second query, rolling back:', err);
                });
            }

            // সব কিছু সঠিকভাবে সম্পন্ন হলে কমিট করা
            connection.commit((err) => {
                if (err) {
                    return connection.rollback(() => {
                        console.error('Error committing transaction:', err);
                    });
                }
                console.log('Transaction Complete!');
                connection.end();
            });
        });
    });
});

এখানে, beginTransaction() দিয়ে ট্রানজেকশন শুরু করা হয়েছে। rollback() যদি কোনো ত্রুটি ঘটে, এবং commit() সফলভাবে সব অপারেশন সম্পন্ন হলে ব্যবহার করা হয়েছে।


৩. NoSQL Database (MongoDB) Query Handling

NoSQL ডাটাবেসে যেমন MongoDB-তে ডাটাবেস কুয়েরি MongoDB Node.js Driver বা Mongoose ব্যবহার করে করা হয়।

MongoDB Query Handling (MongoDB Node.js Driver)

  1. MongoDB ইনস্টল করা
npm install mongodb
  1. MongoDB কনফিগারেশন এবং কুয়েরি এক্সিকিউট করা
const { MongoClient } = require('mongodb');

// MongoDB URL
const url = 'mongodb://localhost:27017';
const dbName = 'test_db';

// MongoDB ক্লায়েন্ট তৈরি করা
const client = new MongoClient(url);

async function main() {
    try {
        await client.connect();
        console.log('Connected to MongoDB');
        
        const db = client.db(dbName);
        const collection = db.collection('users');

        // Find কুয়েরি
        const users = await collection.find({}).toArray();
        console.log(users);

        // Insert কুয়েরি
        const insertResult = await collection.insertOne({ name: 'Alice', email: 'alice@example.com' });
        console.log('Inserted document:', insertResult);

    } finally {
        await client.close();
    }
}

main().catch(console.error);

এখানে, MongoDB এর find(), insertOne() মেথড ব্যবহার করা হয়েছে কুয়েরি এক্সিকিউট করার জন্য এবং await এর মাধ্যমে অ্যাসিনক্রোনাসভাবে কাজ করা হচ্ছে।

MongoDB Transaction Handling (Mongoose)

MongoDB-তে ট্রানজেকশন পরিচালনা করতে Mongoose ব্যবহার করা হয়। মংগোডিবিতে ট্রানজেকশন মূলত একাধিক ডাটাবেস অপারেশন একসাথে অ্যাটমিকভাবে পরিচালনা করা হয়।

npm install mongoose
const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/test_db', { useNewUrlParser: true, useUnifiedTopology: true });

const userSchema = new mongoose.Schema({ name: String, email: String });
const User = mongoose.model('User', userSchema);

const session = await mongoose.startSession();
session.startTransaction();

try {
    const user = new User({ name: 'John', email: 'john@example.com' });
    await user.save({ session });

    // কমপ্লেক্স অপারেশনগুলি (যেমন অ্যাকাউন্ট ব্যালেন্স আপডেট) 
    await session.commitTransaction();
    console.log('Transaction committed');
} catch (error) {
    await session.abortTransaction();
    console.error('Transaction aborted due to error:', error);
} finally {
    session.endSession();
}

এখানে, startSession() দিয়ে ট্রানজেকশন শুরু করা হয়েছে এবং commitTransaction() এবং abortTransaction() দিয়ে টানজেকশন সফলভাবে শেষ বা ব্যর্থ হওয়া অনুযায়ী সিদ্ধান্ত নেওয়া হচ্ছে।


সারাংশ

  • Database Queries: SQL (MySQL/PostgreSQL) এবং NoSQL (MongoDB) ডাটাবেসে ডাটা এক্সট্র্যাকশন, ইনসার্ট, আপডেট, ডিলিট করার জন্য কুয়েরি ব্যবহৃত হয়।
  • Transactions: একাধিক ডাটাবেস অপারেশন একত্রে সম্পন্ন হলে এগুলিকে একক ইউনিট হিসেবে পরিচালনা করার জন্য transactions ব্যবহৃত হয়। এটি ডাটাবেসে অ্যাটমিকতা নিশ্চিত করে, যেখানে commit এবং rollback এর মাধ্যমে কার্যক্রম পরিচালনা করা হয়।
  • SQL (MySQL): MySQL এ beginTransaction(), commit(), এবং rollback() এর মাধ্যমে ট্রানজেকশন পরিচালনা করা যায়।
  • MongoDB: MongoDB-তে startSession() ব্যবহার করে ট্রানজেকশন শুরু করা হয় এবং Mongoose ব্যবহার করে ডাটাবেস অপারেশনসমূহ পরিচালিত হয়।

এভাবে আপনি আপনার ডাটাবেস কার্যক্রমে queries এবং transactions ব্যবহারের মাধ্যমে ডাটা পরিচালনা এবং সংরক্ষণ আরও কার্যকরভাবে করতে পারেন।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...